焊接新需求接口说明

修订日期 修订版本 修订内容 修订人
2025.05.08 v0.1 初始化文档 李东阳

新增需求: ① 方位角设置;② 中心上升设置;③ 动态调整频率和幅值

方位角

SuperimposedParameters结构体新增属性:

double        azimuth;        // 摆焊波形方位角,单位rad

定义: 在摆焊平面,增加方位角theta,以图像的第一个周期为例,定义方位角向量,起点是T/4周期处x轴上的点,终点是波峰顶点,方位角是Y轴和方位角向量之间的夹角:

angle

理论取值范围(-π/2,π/2)

中心上升

SuperimposedParameters结构体新增属性:

double        ridge_height;        // 中心上升高度

定义: 将摆焊波形投影到摆焊坐标系的xy平面,波形和主路径的交点,给交点设置的高度值。在轨迹开头和轨迹结尾不进行中心上升

中心隆起

动态调整频率和幅值

SuperimposedParameters结构体新增属性:

int         adjust_cycle_num{0};    // 动态调节频率和幅值时, 指定的过渡段数量

在摆焊过程中实现频率和幅值的实时调整,用户可以设置过渡段的数量。

变频

新增接口

    /**
     * @brief 设置摆动参数,位置摆主要用于焊接,姿态摆主要用于力控寻孔
     * @param sp: 摆动参数,具体参考SuperimposedParameters结构体
     * @return: 返回值 < 0, 表示设置失败
     */
    ARAL_API_COMMON(1.0) int tpSetWeaveParameters(const SuperimposedParameters& sp) = 0;

    /**
     * @brief 支持在摆动过程中调整频率和振幅,暂只支持正弦摆
     * @param frequency: 摆动参数频率, 范围[0.1, 5], 单位: Hz
     * @param amplitude: 两侧摆动幅值, 单位: m
     * @return: 返回值 < 0, 表示调整失败
     */
    ARAL_API_COMMON(1.0) int tpUpdateWeaveParameters(const double& frequency, const Array2d& amplitude) = 0;

开发实例

std::vector<std::vector<interface::PathPoint>> pathpoints;
std::vector<interface::RLPose> poses;
std::vector<interface::PathProperty> path_propertys;
std::vector<interface::MoveProperty> move_propertys;

interface::MoveProperty mAttr_L;
std::vector<double> maxV,maxA,maxJ;
maxV = {0.01, 2.0};
maxA = {4.0, 16.0};
maxJ = {32.0, 128.0};
mAttr_L = generateMoveProperty(interface::MoveMode::POSITION, 0, maxV, maxA, maxJ);

// step01 设置焊接参数
interface::SuperimposedParameters sp; // 焊接参数
sp.vel = maxV[0]; // 焊接参数vel和焊接轨迹的位置速度一致
sp.frequency = 1;
sp.amplitude = {0.0025, 0.0025};
sp.angle = M_PI / 4;
sp.type = interface::WeaveType::SINE;
sp.azimuth = M_PI / 3;
sp.ridge_height = 0.0005;
sp.hold_distance = {0.005, 0.01};
sp.adjust_cycle_num = 1;
sp.enable = true;

// step02 生成路点
poses = { {0.413127, 0.152011, 0.44038, -3.13922, -0.00236571, 1.57078} };
int N = poses.size();
path_propertys.resize(N);
move_propertys.resize(N);
pathpoint.resize(N);
interface::ToolWorkpiece tw;
for(int i = 0; i < N; i++)
{
    path_propertys[i].describe_space = interface::DescribeSpace::CARTESIAN;
    path_propertys[i].blend_radius = {0.1, 0.1};
    move_propertys[i] = mAttr_L;
    pathpoint[i] = generatePathPoint(interface::DescribeSpace::CARTESIAN, i+1, {}, poses[i], tw);
}

// step03 添加摆焊轨迹
ret = robot->tpSetWeaveParameters(sp); // 第一次调用,摆焊开始
int N = pathpoint.size();
for(int i = 0; i < N; i++)
{
    ret = robot->tpAddPositionLine(pathpoint[i], path_propertys[i], move_propertys[i]);
    CHECK(ret >= 0);
}
sp.enable = false;
ret = robot->tpSetWeaveParameters(sp); // 第二次调用,摆焊结束

//===============================动态调整焊接参数============================================
// 在当前摆焊执行过程中,任意时刻调用tpUpdateWeaveParameters,即可实现频率和幅值的实时调整
robot->tpUpdateWeaveParameters(1, {0.001, 0.001});

results matching ""

    No results matching ""